package cn.b.sky.admin.service;

import cn.b.sky.admin.model.BatchJobReport;
import cn.b.sky.admin.model.Factory;
import cn.b.sky.admin.model.condition.FactoryCondition;

import java.util.List;
import java.util.Set;

/**
 * 
 * <strong>Title : FactoryService.java<br></strong>
 * <strong>Package : cn.b.sky.admin.service<br></strong>
 * <strong>Description : </strong>工厂服务接口<br> 
 * <strong>Create on : 2016年6月12日 上午11:32:21<br></strong>
 * <p>
 * @author Yantao.Lu<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人|修改日期|修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface FactoryService {
  /**
   * 
   * <strong>Title : selectFactoryListByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询工厂列表<br> 
   * <strong>Create on : 2016年6月12日 下午1:37:48<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Factory>
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<Factory> selectFactoryListByCondition(FactoryCondition condition);

  /**
   * 
   * <strong>Title : selectFactoryCountByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询工厂数量<br> 
   * <strong>Create on : 2016年6月12日 下午1:38:12<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int selectFactoryCountByCondition(FactoryCondition condition);

  /**
   * 
   * <strong>Title : insertFactory<br></strong>
   * <strong>Description : </strong>新增工厂<br> 
   * <strong>Create on : 2016年6月12日 下午1:38:29<br></strong>
   * <p>
   * @param factory
   * void
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertFactory(Factory factory);

  /**
   * 
   * <strong>Title : updateFactory<br></strong>
   * <strong>Description : </strong>更新工厂<br> 
   * <strong>Create on : 2016年6月12日 下午1:38:47<br></strong>
   * <p>
   * @param factory
   * void
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void updateFactory(Factory factory);

  /**
   * 
   * <strong>Title : selectFactory<br></strong>
   * <strong>Description : </strong>查询工厂<br> 
   * <strong>Create on : 2016年6月12日 下午1:38:58<br></strong>
   * <p>
   * @param siteCode
   * @return
   * Factory
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public Factory selectFactory(String siteCode);

  /**
   * 
   * <strong>Title : deleteFactory<br></strong>
   * <strong>Description : </strong>删除工厂<br> 
   * <strong>Create on : 2016年6月12日 下午1:39:09<br></strong>
   * <p>
   * @param siteCode
   * @param tableList
   * void
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   * @return 
   */
  public BatchJobReport deleteFactory(String siteCode, Set<String> tableSet);

  /**
   * 
   * <strong>Title : insertTableData<br></strong>
   * <strong>Description : </strong>复制已有工厂数据到新工厂<br> 
   * <strong>Create on : 2016年6月12日 下午1:10:47<br></strong>
   * <p>
   * @param tableName
   * @param sourceSiteCode
   * @param targetSiteCode
   * void
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertTableData(String tableName, String sourceSiteCode, String targetSiteCode);

  /**
   * 
   * <strong>Title : insertTableData<br></strong>
   * <strong>Description : </strong>复制已有工厂数据到新工厂<br> 
   * <strong>Create on : 2016年6月13日 下午2:44:27<br></strong>
   * <p>
   * @param factory
   * @param tableSet
   * @param sourceSiteCode
   * void
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertTableData(Factory factory, Set<String> tableSet, String sourceSiteCode);

  /**
   * 
   * <strong>Title : selectAllFactories<br></strong>
   * <strong>Description : </strong>获取所有的工厂<br> 
   * <strong>Create on : 2016年6月14日 上午9:38:39<br></strong>
   * <p>
   * @return
   * List<Factory>
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<Factory> selectAllFactories();

  /**
   * 
   * <strong>Title : updateAdminPassword<br></strong>
   * <strong>Description : </strong>更新工厂ADMIN用户密码<br> 
   * <strong>Create on : 2016年6月14日 下午5:02:30<br></strong>
   * <p>
   * @param siteCode
   * @param password
   * void
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void updateAdminPassword(String siteCode, String password);

}
